﻿#pragma once

#include "../../Shared/Enums.h"
#include <unordered_map>

//C# TO C++ CONVERTER NOTE: Forward class declarations:
namespace LibraryEditor { class Frame; }

namespace LibraryEditor
{
    class FrameSet : public std::unordered_map<MirAction, Frame*>
    {
    public:
        FrameSet();
        FrameSet(std::unordered_map<MirAction, Frame*> &dictionary);

        static FrameSet *DefaultMonsterFrameSet;

        static FrameSet *DefaultNPCFrameSet;
    };

    class Frame
    {
    private:
        int Start = 0;
        int Count = 0;
        int Skip = 0;
        int Interval = 0;
        int EffectStart = 0;
        int EffectCount = 0;
        int EffectSkip = 0;
        int EffectInterval = 0;
        bool Reverse = false;
        bool Blend = false;

    public:
        int getStart() const;
        void setStart(int value);
        int getCount() const;
        void setCount(int value);
        int getSkip() const;
        void setSkip(int value);
        int getInterval() const;
        void setInterval(int value);

        int getEffectStart() const;
        void setEffectStart(int value);
        int getEffectCount() const;
        void setEffectCount(int value);
        int getEffectSkip() const;
        void setEffectSkip(int value);
        int getEffectInterval() const;
        void setEffectInterval(int value);

        bool getReverse() const;
        void setReverse(bool value);
        bool getBlend() const;
        void setBlend(bool value);

        int getOffSet() const;

        Frame(int start, int count, int skip, int interval, int effectstart = 0, int effectcount = 0, int effectskip = 0, int effectinterval = 0);

        Frame(BinaryReader *reader);

        void Save(BinaryWriter *writer);
    };
}
